package servlets;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import objetos.Candidato;
import objetos.DocumentoIdentidad;
import utils.Constantes;
import coneccion.CandidatosConsultas;
import coneccion.DocumentoIdentidadConsultas;

/**
 * 
 */
public class CandidatosForm extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public CandidatosForm() {
        super();

    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		processRequest(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		processRequest(request, response);
	}
	
	protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
		
		request.setCharacterEncoding( "UTF-8");

		String accion = request.getParameter("accion");
		if(accion==null || !accion.equals(Constantes.FORM_ACTUALIZAR)){
			accion = Constantes.FORM_AGREGAR;
		}
		
		String id = request.getParameter("id");
		String nombres = request.getParameter("nombres");
		String apellidos = request.getParameter("apellidos");
		String partidoPolitico = request.getParameter("partidoPolitico");
		String tipoDocumento = request.getParameter("tipoDocumento");
		String numeroDocumento = request.getParameter("numeroDocumento");
		
		Candidato candidato = new Candidato();
		DocumentoIdentidad documentoIdentidad = null;
		Integer tipoDocumentoInt = null;
		Integer idInt = null;
		List<DocumentoIdentidad> listaDocumentosIdentidad= null;
		
		try{
			if(id!=null && id.length()>0){
				idInt = Integer.valueOf(id);
			}
		}catch (Exception e) {
			idInt = null;
		}
		
		if(accion.equals(Constantes.FORM_ACTUALIZAR)){
			if(idInt!=null && idInt.intValue()>0){
				Candidato candidatoBusqueda = new Candidato();
				candidatoBusqueda.setId(idInt);
				CandidatosConsultas candidatosConsultas = new CandidatosConsultas();
				candidato = candidatosConsultas.getCandidato(candidatoBusqueda);
			}
		}
		

		if((apellidos!=null && candidato.getApellidos().length()>0)
				&& (nombres!=null && nombres.length()>0)
				&& (partidoPolitico!=null && partidoPolitico.length()>0)
				&& (numeroDocumento!= null && numeroDocumento.length()>0)
				&& (tipoDocumento!=null && tipoDocumento.length()>0)){
				candidato.setApellidos(apellidos);
				candidato.setNombres(nombres);
				candidato.setPartidoPolitico(partidoPolitico);
				candidato.setNumeroDocumento(numeroDocumento);
			
			try{
				if(tipoDocumento!=null && tipoDocumento.length()>0){
					tipoDocumentoInt = Integer.valueOf(tipoDocumento);
				}
			}catch (Exception e) {
				tipoDocumentoInt = null;
			}
			
			if(tipoDocumentoInt!=null && tipoDocumentoInt.intValue()>0){
				documentoIdentidad = new DocumentoIdentidad();
				documentoIdentidad.setId(tipoDocumentoInt);				
			}
			
			
			candidato.setDocumentoIdentidad(documentoIdentidad);
		}
		
		DocumentoIdentidadConsultas documentoIdentidadConsultas = new DocumentoIdentidadConsultas();
		listaDocumentosIdentidad = documentoIdentidadConsultas.getTodosDocumentoIdentidad();
		
		request.setAttribute("accion", accion);
		request.setAttribute("listaDocumentosIdentidad", listaDocumentosIdentidad);
		request.setAttribute("candidato", candidato);
		RequestDispatcher disp = request.getRequestDispatcher("pages/admin/candidatosForm.jsp");
		disp.forward(request, response);
	}

}
